home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 223_02 / call2.mac < prev    next >
Encoding:
Text File  |  1989-02-21  |  1.9 KB  |  102 lines

  1. ;
  2. ;----- call2.mac   Small-C  arithmetic and logical library
  3. ;
  4. ;
  5. ;    part 2        divide routine
  6. ;      ;
  7.         ;DIVIDE DE BY HL AND RETURN QUOTIENT IN HL, REMAINDER IN DE
  8.         ;(SIGNED DIVIDE)
  9.         ;
  10. CCDIV:: 
  11. DIV:    MOV B,H
  12.         MOV C,L
  13.         MOV A,D
  14.         XRA B
  15.         PUSH PSW
  16.         MOV A,D
  17.         ORA A
  18.         CM CCDENEG
  19.         MOV A,B
  20.         ORA A
  21.         CM CCBCNEG
  22.         MVI A,16
  23.         PUSH PSW
  24.         XCHG
  25.         LXI D,0
  26. CCDIV1: DAD H
  27.         CALL CCRDEL
  28.         JZ  CCDIV2
  29.         CALL CCCMPBCDE
  30.         JM CCDIV2
  31.         MOV A,L
  32.         ORI 1
  33.         MOV L,A
  34.         MOV A,E
  35.         SUB C
  36.         MOV E,A
  37.         MOV A,D
  38.         SBB B
  39.         MOV D,A
  40. CCDIV2: POP PSW
  41.         DCR A
  42.         JZ  CCDIV3
  43.         PUSH PSW
  44.         JMP CCDIV1
  45. CCDIV3: POP PSW
  46.         RP
  47.         CALL CCDENEG
  48.         XCHG
  49.         CALL CCDENEG
  50.         XCHG
  51.         RET
  52.         ;
  53.         ;NEGATE THE INTEGER IN DE
  54.         ;(INTERNAL ROUTINE)
  55.         ;
  56. CCDENEG:        MOV A,D
  57.         CMA
  58.         MOV D,A
  59.         MOV A,E
  60.         CMA
  61.         MOV E,A
  62.         INX D
  63.         RET
  64.         ;
  65.         ;NEGATE THE INTEGER IN BC
  66.         ;(INTERNAL ROUTINE)
  67.         ;
  68. CCBCNEG:        MOV A,B
  69.         CMA
  70.         MOV B,A
  71.         MOV A,C
  72.         CMA
  73.         MOV C,A
  74.         INX B
  75.         RET
  76.         ;
  77.         ;ROTATE DE LEFT ONE BIT
  78.         ;(INTERNAL ROUTINE)
  79.         ;
  80. CCRDEL:
  81.      MOV A,E
  82.         RAL
  83.         MOV E,A
  84.         MOV A,D
  85.         RAL
  86.         MOV D,A
  87.         ORA E
  88.         RET
  89.         ;
  90.         ;COMPARE BC TO DE
  91.         ;(INTERNAL ROUTINE)
  92.         ;
  93. CCCMPBCDE:
  94.     MOV A,E
  95.         SUB C
  96.         MOV A,D
  97.         SBB B
  98.         RET
  99.        
  100.     END
  101.  
  102.